package grafica.controladores;

import java.sql.SQLException;

import persistencia.DAOException;
import persistencia.PersistenciaException;
import grafica.ventanas.empleadoModAsalariado;
import grafica.ventanas.empleadoModFreelance;
import grafica.ventanas.empleadoModificar;
import logica.clases.Facade;
import logica.datatypes.DataAsalariado;
import logica.datatypes.DataEmpleado;
import logica.datatypes.DataFreelance;

public class ControladorEmpleadoMod {
	private Facade facade;	
	empleadoModificar emplMod;
	public DataEmpleado[] empleados;
	
	public ControladorEmpleadoMod(empleadoModificar empleadoMod) {
		emplMod = empleadoMod;
		try {
			facade = new Facade();
		} catch (PersistenciaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
		
	}	
	
	public DataEmpleado[] getEmpleados(){
		try {
			empleados = facade.listadoEmpleados();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (PersistenciaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return empleados;
	}
	
	public void ModificarEmpleado(int ci){
		empleadoModAsalariado modAsalariado;
		empleadoModFreelance modFreelance;
		DataEmpleado dataEmpl;
		try {					
			dataEmpl = facade.obtenerEmpleado(ci);
			if (dataEmpl instanceof DataAsalariado){
				modAsalariado = new empleadoModAsalariado((DataAsalariado)dataEmpl);
				modAsalariado.setVisible(true);
			}
			
			if (dataEmpl instanceof DataFreelance){
				modFreelance = new empleadoModFreelance((DataFreelance)dataEmpl);
				modFreelance.setVisible(true);
			}
				
			//facade.eliminarEmpleado(ci);
			//emplMod.setJLabelMensajes("Empleado dada de Baja");
		} catch (PersistenciaException e) {
			emplMod.setJLabelMensajes(e.darMensaje());
		} catch (SQLException e) {
			emplMod.setJLabelMensajes("ERROR1: No se pudo Modificar");
		} catch (DAOException e) {
			emplMod.setJLabelMensajes(e.darMensaje());
		} catch (ClassNotFoundException e) {
			emplMod.setJLabelMensajes("ERROR2: No se pudo Modificar");
		}
		

	}
	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
